When an application is provisioned in a cloud environment, the application is defined with certain parameters or resources such as CPU (central processing unit) core resources, memory resources, disk resources, network resources, etc. The resources are typically fixed until an end user or workload defines or partitions a higher/lower value of one of the resources for the application. When this occurs and when the application's workloads are executing on a single cloud environment, the workloads typically have the ability to increase their resources automatically within the single cloud environment based on demand.
Hybrid cloud solutions are becoming more common where a solution is built from components across multiple cloud providers and an application's workloads may span across multiple cloud providers. Current hybrid cloud solutions, however, do not have checks and balances in place for a given workload to allocate additional resources across the multiple cloud providers. As a result, an application's workloads' ability to dynamically scale resources is lost in a hybrid cloud environment. In turn, a system designer has a choice to initially provision the application with an increased amount of resources, which wastes money, or a decreased amount of resources, which risks performance issues.
Cloud environments are a known type of computing environment. Cloud environments typically: (i) are distributed in space (for example, multiple computers communicating with each other over wide area and local area networks); (ii) change in their topography over time (for example, a virtual machine instance may be running on a first blade server at a first point in time, and then a different blade server in a different city at a second point in time); and (iii) make extensive use of computing resources located in and managed as cloud computing resources.
Cloud computing is an information technology (IT) paradigm that enables ubiquitous access to shared pools of configurable system resources and higher-level services that can be rapidly provisioned with minimal management effort, often over the internet. Cloud computing relies on sharing of resources to achieve coherence and economies of scale, similar to a public utility. Third-party clouds enable organizations to focus on their core businesses instead of expending resources on computer infrastructure and maintenance. Cloud computing typically allows companies to avoid or minimize up-front IT infrastructure costs. Cloud computing can allow enterprises to get their applications up and running faster, typically with improved manageability and less maintenance. Cloud computing typically enables IT teams to more rapidly adjust resources to meet fluctuating and unpredictable demand. Cloud providers typically use a “pay-as-you-go” model.
“Scaling” is a known concept in computing. As the term is used herein, scaling is the capability of adding or subtracting resources that are being utilized by an existing system.